package com.sxj.corejava.code07_面向对象;

import com.sxj.corejava.code06_数组.ArrayUtil;
import com.sxj.corejava.code06_数组.Test12_螺旋式数组;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2025年07月18日 9:49
 */
public class Test01_定义类 {

    public static void main(String[] args) {
//        ArrayUtil au = new ArrayUtil();
//        Test12_螺旋式数组 a = new Test12_螺旋式数组();
//        Scanner sc = new Scanner(System.in);
//        String s = new String("admin");

        // 创建对象,对象是某一个类的具体的实例
        // 即:对象的数据类型是指向某一个类的
        // 语法:类 对象 = new 类()
        Person person = new Person();
        // 访问属性,通过对象名.属性名访问属性
        // 对象名.属性名 = 值表示赋值
        // 直接访问对象名.属性名表示取值
        person.name = "admin";
        person.age = 20;
        person.gender = "男";
        person.hobbies = new String[]{"吃饭", "睡觉", "打豆豆"};
        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.gender);
        System.out.println(Arrays.toString(person.hobbies));

        // 访问方法,语法:对象名.方法名
        person.eat();
        person.sleep();
        person.show();
    }

}

class Person {
    // 成员属性:用于表示类的特征
    // 语法:属性类型 属性名
    // 属性本质上就是一个变量,定义在类中
    // 在方法中定义的变量必须赋值,如果不赋值使用时会报错
    // 但是属性可以不赋值,每一种类型的属性都存在默认值
    // 其默认值与数组默认值一致
    String name;
    int age;
    String gender;
    String[] hobbies;

    // 成员方法,定义类的行为
    // 语法:修饰符 返回值类型 方法名(参数列表)
    public void eat() {
        System.out.println(name + "饿了,想要吃饭");
    }

    public void sleep() {
        System.out.println(name + "困了,想要睡觉");
    }

    public void show() {
        System.out.println("姓名:" + name + ",年龄:" + age + ",性别:" + gender + ",兴趣:" + Arrays.toString(hobbies));
    }


}
